React文件预览,React实现在线预览docx,xslx,pdf格式文件 |
您所在的位置:网站首页 › perfect viewer分页 › React文件预览,React实现在线预览docx,xslx,pdf格式文件 |
一、前言
由于项目需要实现文件的预览功能,通过查询百度找到了一个组件,就是react-file-viewer,其官方API中描述可支持文件格式有以下格式: 图片:png,jpeg,gif,bmp,包括360度图片 pdf格式 CSV xslx docx 视频:mp4,webm 音频:mp3 但是经过我的测试发现它可以打开docx,xslx格式的文件,pdf格式的文件有时能打开有时打不开的(我刚开始测试的时候pdf格式的文件就一直打不开,但是当项目写完测试的时候发现又能打开pdf格式的文件了)。所以当时开发的时候就选择了用react-pdf-js插件来打开pdf。 二、使用react-file-viewer实现docx,xlsx文件的预览1.安装react-file-viewe npm install react-file-viewer 2.组件中引入react-file-viewe //react文件预览支持docx,xlsx import FileViewer from 'react-file-viewer';3.使用 render() { const {type } = this.state; return ( display: this.state.fileState }} className={styles.filesBox}> styles.x} src={x} onClick={this.closeFile.bind(this)} alt="" /> { type == 'docx' ?//判断类型是否为docx xiangmu} //文件地址 /> : type == 'xlsx' ?//判断类型是否为xlsx ceshi} //文件地址 /> : '' } ) }css .filesBox{ width: 40%; height: 86%; display: flex; left: 25%; background: #fff; justify-content: center; align-items: center; position: absolute; border: 1px solid #eee; border-radius: 12px; .fileTop{ color: #333; background-color: #f8f8f8; border: 1px solid #eee; height: 42px; line-height: 42px; padding: 0 80px 0 20px; .x{ position: absolute; cursor: pointer; top: 16px; right: 20px; z-index: 2; } } .flieContent{ width: 100%; height: calc(100% - 42px); } }效果代码: 1.安装react-pdf-js. npm install react-pdf-js 2.组件中引入react-pdf-js //react预览pdf文件插件 import PDF from 'react-pdf-js';3.使用 biji}//文件地址 onDocumentComplete={this.onDocumentComplete} page={page}//文件页码 /> page === 1 ? null : styles.filePdfPage}> 第{page}页/共{pages}页 {page === pages ? null : marginLeft: '10px' }} type='primary' onClick={this.handleNext}>下一页 }css .flieContent{ width: 100%; height: calc(100% - 42px); } .filePdf{ width: 100%; height: calc(100% - 84px); display: flex; justify-content: center; overflow: scroll; overflow-x: hidden; } .filePdfFooter{ height: 42px; width: 100%; display: flex; justify-content: center; align-items: center; } .filePdfPage{ margin: 0 10px; }js //获取所有页 onDocumentComplete = (pages) => { this.setState({ page: 1, pages }) } //点击上一页 handlePrevious = () => { this.setState({ page: this.state.page - 1 }) } //点击下一页 handleNext = () => { this.setState({ page: this.state.page + 1 }) }效果: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |